public class code3 {
    // 在二叉树中找到两个节点的最近公共祖先(递归方法)
    // 并没理解。。。。

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param o1 int整型
     * @param o2 int整型
     * @return int整型
     */
    public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
        // write code here
        int re = getCur(root, o1, o2);
        if(re > 0) {
            return re;
        }
        return 0;
    }
    private static int getCur (TreeNode root, int p, int q) {
        // 同样，通过后续遍历的形式获取节点并进行判断
        // 左、右、根
        // 这里将 -1 作为一个错误返回
        if(root == null) {
            return -1;
        }
        if(root.val == p || root.val == q) {
            return root.val;
        }
        int left = getCur(root.left, p, q);
        int right = getCur(root.right, p, q);
        // 进行判断操作
        if(left == -1) {
            return right;
        }
        if(right == -1) {
            return left;
        }
        return root.val;
    }
}
